#include <bits/stdc++.h>
using namespace std;

const int N = 2e5+50;

int t, n, p, k;
int a[N];
int sum[N], pre[N];
int main(int argc, char const *argv[])
{
    scanf("%d", &t);
    for (int kk=0; kk<t; ++kk)
    {
        scanf("%d%d%d", &n, &p, &k);
        for (int i=0; i<n; ++i)
            scanf("%d", &a[i]);
        sort(a, a+n);
        int ans = 0;
        if (k > n)
        {
            int s = 0;
            for (int i=0; i<n; ++i)
            {
                s += a[i];
                if (s < p) ans++;
            }
        }
        else
        {
            memset(sum, 0, sizeof(int) * n);
            pre[0] = a[0];
            if (pre[0] <= p) ans = 1;
            // sum[0] = a[0];
            for (int i=1; i<k-1; ++i)
            {
                pre[i] = pre[i-1] + a[i];
                if (pre[i] <= p) ans = i+1;
                // sum[i] += a[i];
            }
            // sum[k-1] = a[k-1];
            for (int i=k-1; i<n; ++i)
            {
                sum[i%k] += a[i];
                int price = sum[i%k];
                if (i % k != k-1)
                    price += pre[i%k];
                if (price <= p) ans = i+1;
                // printf("%d %d\n", i, ans);
            }
        }
        printf("%d\n", ans);
        // return 0;
    }
    return 0;
}
